package com.briup.day06;

import java.util.Arrays;

/**
 * 数组工具类讲解
 */
public class ArraysTest {
    public static void main(String[] args) {
        /*
        数组内部本身只有一个length属性，此外没有其他任何属于自己的方法
        即如果需要实现数组相关的业务问题，那么基本上都需要自己编写方法进行实现；
        如：在一个数组中求取最大值、平均值、求和....
        但是，对于数组来说，还是存在大量共性的问题，如排序、查找、扩容等问题，
        对于所有数组来说，这些操作基本上都是一样的，所以在JDK中给我们提供了一个
        针对于这些共性问题解决方案的集合体 Arrays工具类
        Arrays类中提供了大量的static方法
         */
        int[] arr = {6, 10, -7, -3, 100};
        // 给数组中指定的区间排序，[fromIndex,toIndex)
        Arrays.sort(arr, 1, 4);
        System.out.println(Arrays.toString(arr));
        // 二分查找，前提是数组有序
        System.out.println(Arrays.binarySearch(arr, -7));
        // 数组进行扩容：数组对象的长度一经确定，其长度是无法变化的，
        // 我们在这里说到的扩容，指的是创建一个更长的数组对象，然后将原有数组中的数据迁移到新数组中
        // copyOf(int[] origin,int len)，在使用时需要传入原有的数组对象，以及新数组的长度
        arr = Arrays.copyOf(arr, 10);
        System.out.println(Arrays.toString(arr));

        // 向数组中填充数据，在填充数据时，可以选择数组哪一个范围的数据需要填充
        // 如果不指定范围，那么就是所有区域都需要填充
        Arrays.fill(arr, 5, 10, 10);
        System.out.println(Arrays.toString(arr));

    }
}
